package SistemaDAOS;

import Herramientas.PasarelaDatos;
import Herramientas.ResultSets;
import SistemaDTOS.MenuDTO;
import SistemaDTOS.MenuItemDTO;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Mauricio Alan
 */
public class ServiciosDAO {

    private PasarelaDatos db;
    private ResultSets res;
    public ServiciosDAO() {
        db = new PasarelaDatos();
            res = new ResultSets();
    }

    /**
     * ALAN GONZALEZ METODO QUE GENERALE VECTOR PRINCIPAL 
     * DE SECCIONES Y SERVICIOS PARA EL MENU SEGUN EL USUARIO LOGEADO
     * @param idServicioAsignado
     * @param nivelSeguridad
     * @return 
     */
    public Vector MenuServicios(Vector idServicioAsignado, int nivelSeguridad) {
        Vector menuEstructura = new Vector();
        int aux =0;
        for(aux=0; aux<idServicioAsignado.size(); aux++){
        db.openDatabase();
            MenuDTO menu = new MenuDTO();
            String querySecciones = 
                     "SELECT * FROM menu_servicios WHERE id = " 
                    + idServicioAsignado.elementAt(aux) 
                    +" AND id_categoria = 0";
            // SE PARSEA EL ELEMENTO CARACTER A NUMERICO
            int itemIdAux = Integer.parseInt(idServicioAsignado.elementAt(aux).toString());
            ResultSet rst = db.executeQuery(querySecciones);
            try {
                while(rst.next()){
                 menu.setTituloSeccion(rst.getString("titulo"));
                 menu.setUrl(rst.getString("url"));
                 menu.setItemsSeccion(this.seccionesItems(itemIdAux, nivelSeguridad));
                }
            } catch (SQLException ex) {
                Logger.getLogger(ServiciosDAO.class.getName()).log(Level.SEVERE, null, ex);
            }
          menuEstructura.add(menu);
        db.closeDatabase();
        }
        return menuEstructura;
    }

    /**
     * ALAN GONZALEZ 
     * METODO AUXILIAR QUE BUSCA LOS ITEMS DE CADA SECCION SEGUN
     * EL ID DE SECCION, EL NIVEL DE SEGURIDAD DE CADA SECCION
     *
     * @return
     */
    public Vector seccionesItems(int idSeccion, int nivelSeguridad) {
        Vector seccionesItems = new Vector();
        String query = "select * from  menu_servicios where ";
        query += "id_categoria=1";
        query += " and id_pertenece="+idSeccion;
        query += " and nivel_seguridad="+nivelSeguridad;
        db.openDatabase();
        ResultSet rst = db.executeQuery(query);
        try {
            while(rst.next()){
                MenuItemDTO m = new MenuItemDTO();
                m = res.menuItemDTO(rst);
                seccionesItems.add(m);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ServiciosDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        db.closeDatabase();
        return seccionesItems;
    }
    
    /**
     * ALAN GONZALEZ
     * METODO PARA RECUPERAR EN VECTOR 
     * EL CATALOGO DE SERVICIOS "[  SEGUN ID DE CATEGORIA = 0 ]"
     * @return 
     */
    public Vector catalogoServicios(){
        Vector  cat = new Vector();
        String query = "SELECT * FROM menu_servicios WHERE menu_servicios.id_categoria =0;";
        db.openDatabase();
        ResultSet rst = db.executeQuery(query);
        try {
            while(rst.next()){
                MenuDTO seccion = new MenuDTO();
                seccion.setId(rst.getInt("id"));
                seccion.setTituloSeccion(rst.getString("titulo"));
            }
        } catch (SQLException ex) {
            Logger.getLogger(ServiciosDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return cat;
    }
}
